package es.javamyadmin.dao;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import es.javamyadmin.modelo.Databases;

public class DatabasesDAO {
	
	Connection conexion = null;
	Statement estamento = null;
	PreparedStatement preparada = null;
	ResultSet resultado = null;
	
	
	/*METODO PARA LEER BASES DE DATOS*/
	public Collection<Databases> leerDatabases(String user, String pass, String host, String port){
		Collection<Databases> lista = new ArrayList<Databases>();
		try {
			System.out.println("jdbc:mysql://"+host+":"+port+"/"+ user+ pass);
			Class.forName("com.mysql.jdbc.Driver");                
      	    conexion=DriverManager.getConnection("jdbc:mysql://"+host+":"+port+"/", user, pass);
      	    
      	    PreparedStatement pstm = conexion.prepareStatement("SHOW DATABASES");
      	    resultado = pstm.executeQuery();
			while(resultado.next()){
				Databases db = new Databases();
				db.setNombreBD(resultado.getString(1));
				lista.add(db);
			}
		} catch(SQLException | ClassNotFoundException ex){
			ex.printStackTrace();
		} finally {
			cerrarConexion();
		}
		
		return lista;		
	}
	
	public void cerrarConexion(){
		if(resultado != null){
			try {
				resultado.close();
			} catch(SQLException e){
				e.printStackTrace();
			}
			resultado = null;
		}
		if(estamento != null){
			try {
				estamento.close();
			} catch(SQLException e){
				e.printStackTrace();
			}
			estamento = null;
		}
		if(preparada != null){
			try {
				preparada.close();
			} catch(SQLException e){
				e.printStackTrace();
			}
			preparada = null;
		}
		if(conexion != null){
			try {
				conexion.close();
			} catch(SQLException e){
				e.printStackTrace();
			}
			conexion = null;
		}
	}
		
}
